]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
dash: Clean up search pane creation
authorColin Walters <walters@verbum.org>
Wed, 12 Aug 2009 21:07:00 +0000 (17:07 -0400)
committerColin Walters <walters@verbum.org>
Wed, 12 Aug 2009 23:33:08 +0000 (19:33 -0400)
There was some weirdness relating to when the search pane is shown
in a timeout, and how that relates to setSearch.  Instead of doing
this in the timeout, just call setSearch() in the timeout.  The
pane hide/show state is directly controlled from the handler.

js/ui/dash.js

index 479a5d10a62b1c434be0bf9670ce1bb762401e0a..1059f40e595163c68c275e7f811f9f6d102b59ca 100644 (file)
@@ -447,11 +447,19 @@ Dash.prototype = {
         this._searchAreaApps = null;
         this._searchAreaDocs = null;
 
-        this._searchQueued = false;
+        this._searchId = 0;
         this._searchEntry.entry.connect('text-changed', Lang.bind(this, function (se, prop) {
             let text = this._searchEntry.getText();
+            text = text.replace(/^\s+/g, "").replace(/\s+$/g, "")
             this._searchActive = text != '';
-            if (this._searchQueued)
+            if (!this._searchActive) {
+                if (this._searchPane != null)
+                    this._searchPane.close();
+                if (this._searchId > 0)
+                    Mainloop.source_remove(this._searchId);
+                return;
+            }
+            if (this._searchId > 0)
                 return;
             if (this._searchPane == null) {
                 this._searchPane = new ResultPane(this);
@@ -468,18 +476,13 @@ Dash.prototype = {
                 this._addPane(this._searchPane);
                 this._searchEntry.setPane(this._searchPane);
             }
-            this._searchQueued = true;
-            Mainloop.timeout_add(250, Lang.bind(this, function() {
+            this._searchPane.open();
+            this._searchId = Mainloop.timeout_add(150, Lang.bind(this, function() {
+                this._searchId = 0;
                 let text = this._searchEntry.getText();
-                // Strip leading and trailing whitespace
                 text = text.replace(/^\s+/g, "").replace(/\s+$/g, "");
-                this._searchQueued = false;
                 this._searchAreaApps.setSearch(text);
                 this._searchAreaDocs.setSearch(text);
-                if (text == '')
-                    this._searchPane.close();
-                else
-                    this._searchPane.open();
                 return false;
             }));
         }));